{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "GEN_1_XOR_perceptron.ipynb",
      "provenance": [],
      "authorship_tag": "ABX9TyPKVZv+Y8d1ddW8YANm9FRg",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/cxbxmxcx/GenReality/blob/master/GEN_1_XOR_perceptron.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0LM_J-9cKre0"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3B5CUAHNHhMC"
      },
      "source": [
        "XOR Problem"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jta8HlitLBLH",
        "outputId": "11928f7e-61ef-4c82-d42b-9032822633d1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 50
        }
      },
      "source": [
        "X = np.array([[0,0],[0,1],[1,0],[1,1]])\n",
        "Y = np.array([0,1,1,0])\n",
        "             \n",
        "print(X.shape)\n",
        "print(Y.shape)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(4, 2)\n",
            "(4,)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XJ7RT47kHk8Z"
      },
      "source": [
        "Linear Regression Problem"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fb3n8O0amx4e",
        "outputId": "fc9e3157-c33f-41f6-8bd1-50ba895f9309",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        }
      },
      "source": [
        "fig = plt.figure()\n",
        "ax = fig.add_subplot(111, projection='3d')\n",
        "ax.scatter(X[:,0], Y, X[:,1], c='r', marker='o')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<mpl_toolkits.mplot3d.art3d.Path3DCollection at 0x7f597dd69828>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 24
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2rYspUt2nE4m",
        "outputId": "a60f711d-d801-4576-c1bc-20453fb05f85",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "no_of_inputs = X.shape[1]\n",
        "weights = np.random.rand(no_of_inputs + 1)\n",
        "print(weights.shape)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(4,)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WFj5KgJQn2CW",
        "outputId": "5a28db92-0ef5-4247-90bf-77d5c397f8cd",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 185
        }
      },
      "source": [
        "for i in range(len(X)):\n",
        "  inputs = X[i]\n",
        "  print(inputs)\n",
        "  summation = np.dot(inputs, weights[1:]) + weights[0]\n",
        "  print(summation)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[1 2 3]\n",
            "3.077635249490135\n",
            "[3 4 5]\n",
            "5.971623702755604\n",
            "[5 6 7]\n",
            "8.865612156021074\n",
            "[7 8 9]\n",
            "11.759600609286544\n",
            "[9 8 7]\n",
            "11.632282163907172\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DUhtF5--pAxX",
        "outputId": "f8b25471-41a9-4be1-ec27-20accae23541",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "learning_rate = .1\n",
        "epochs = 100\n",
        "history = []\n",
        "for _ in range(epochs):\n",
        "  for inputs, label in zip(X, Y):\n",
        "    prediction = summation = np.dot(inputs, weights[1:]) + weights[0]\n",
        "    loss = label - prediction \n",
        "    history.append(loss*loss)\n",
        "    print(f\"loss = {loss*loss}\")\n",
        "    weights[1:] += learning_rate * loss * inputs\n",
        "    weights[0] += learning_rate * loss"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "loss = 4.316568229923936\n",
            "loss = 2.6830160586355305\n",
            "loss = 100.95769633152057\n",
            "loss = 18042.521408126995\n",
            "loss = 5925836.200792613\n",
            "loss = 116466984.78512634\n",
            "loss = 52905640.73651617\n",
            "loss = 2061245228.4594157\n",
            "loss = 367737683199.77106\n",
            "loss = 120927007954900.66\n",
            "loss = 2377002677576371.0\n",
            "loss = 1079879782786405.2\n",
            "loss = 4.207242624704951e+16\n",
            "loss = 7.505960980551909e+18\n",
            "loss = 2.4682623973752706e+21\n",
            "loss = 4.851741727038753e+22\n",
            "loss = 2.2041614221445446e+22\n",
            "loss = 8.587476195856749e+23\n",
            "loss = 1.5320547680002811e+26\n",
            "loss = 5.038013366633922e+28\n",
            "loss = 9.902974537296913e+29\n",
            "loss = 4.4989522666131595e+29\n",
            "loss = 1.7528047223594434e+31\n",
            "loss = 3.127103669364513e+33\n",
            "loss = 1.028317682511533e+36\n",
            "loss = 2.0213133799142223e+37\n",
            "loss = 9.18288982552789e+36\n",
            "loss = 3.577680245807278e+38\n",
            "loss = 6.382785761449256e+40\n",
            "loss = 2.098917131044442e+43\n",
            "loss = 4.125737943112459e+44\n",
            "loss = 1.8743356352892462e+44\n",
            "loss = 7.30246545890741e+45\n",
            "loss = 1.3028015180845762e+48\n",
            "loss = 4.284136311098027e+50\n",
            "loss = 8.421115569897515e+51\n",
            "loss = 3.825739108781241e+51\n",
            "loss = 1.4905189428549158e+53\n",
            "loss = 2.6591708682669223e+55\n",
            "loss = 8.744425237472605e+57\n",
            "loss = 1.7188485652598637e+59\n",
            "loss = 7.808782724338277e+58\n",
            "loss = 3.042324173268645e+60\n",
            "loss = 5.42767997157061e+62\n",
            "loss = 1.7848398645875388e+65\n",
            "loss = 3.508371742167934e+66\n",
            "loss = 1.5938642417085592e+66\n",
            "loss = 6.209740855440899e+67\n",
            "loss = 1.1078532118918981e+70\n",
            "loss = 3.643067732535863e+72\n",
            "loss = 7.160998665046212e+73\n",
            "loss = 3.2532640626295263e+73\n",
            "loss = 1.267481020942696e+75\n",
            "loss = 2.2612584852603954e+77\n",
            "loss = 7.435928996863268e+79\n",
            "loss = 1.4616439091801076e+81\n",
            "loss = 6.64029393736284e+80\n",
            "loss = 2.5870775864057768e+82\n",
            "loss = 4.61549407653934e+84\n",
            "loss = 1.5177604180283413e+87\n",
            "loss = 2.9833868391448978e+88\n",
            "loss = 1.3553619603487751e+88\n",
            "loss = 5.280529118380974e+89\n",
            "loss = 9.420765343470515e+91\n",
            "loss = 3.0979272226850287e+94\n",
            "loss = 6.089442836303188e+95\n",
            "loss = 2.7664529023696063e+95\n",
            "loss = 1.0778179949681563e+97\n",
            "loss = 1.9228888215425825e+99\n",
            "loss = 6.323233207992223e+101\n",
            "loss = 1.2429267827444232e+103\n",
            "loss = 5.64665519981084e+102\n",
            "loss = 2.1999530809013985e+104\n",
            "loss = 3.924841862849436e+106\n",
            "loss = 1.2906461426812149e+109\n",
            "loss = 2.5369595031805368e+110\n",
            "loss = 1.1525486270971731e+110\n",
            "loss = 4.4903625480019456e+111\n",
            "loss = 8.011063081649057e+113\n",
            "loss = 2.634360319832045e+116\n",
            "loss = 5.178232225849038e+117\n",
            "loss = 2.3524870756551176e+117\n",
            "loss = 9.165357201271241e+118\n",
            "loss = 1.6351520377324897e+121\n",
            "loss = 5.377038729057513e+123\n",
            "loss = 1.0569379980723043e+125\n",
            "loss = 4.801702341239065e+124\n",
            "loss = 1.8707570208172468e+126\n",
            "loss = 3.3375373021658146e+128\n",
            "loss = 1.0975167396853213e+131\n",
            "loss = 2.1573345555894335e+132\n",
            "loss = 9.800838275568442e+131\n",
            "loss = 3.8184347364569814e+133\n",
            "loss = 6.81230551429043e+135\n",
            "loss = 2.2401605318186543e+138\n",
            "loss = 4.403373133739748e+139\n",
            "loss = 2.0004661696514142e+139\n",
            "loss = 7.79387364277365e+140\n",
            "loss = 1.390471542892323e+143\n",
            "loss = 4.572430676325616e+145\n",
            "loss = 8.987801592805483e+146\n",
            "loss = 4.083186339168212e+146\n",
            "loss = 1.5908211231046187e+148\n",
            "loss = 2.8381156827707854e+150\n",
            "loss = 9.332867887298357e+152\n",
            "loss = 1.8345158363409125e+154\n",
            "loss = 8.334262750004473e+153\n",
            "loss = 3.2470527002478065e+155\n",
            "loss = 5.792927348972898e+157\n",
            "loss = 1.90494791868031e+160\n",
            "loss = 3.7444622236427167e+161\n",
            "loss = 1.7011208849278697e+161\n",
            "loss = 6.6276158174278954e+162\n",
            "loss = 1.1824044902114873e+165\n",
            "loss = 3.8882223735569317e+167\n",
            "loss = 7.64288705855674e+168\n",
            "loss = 3.4721874650954776e+168\n",
            "loss = 1.3527742072085266e+170\n",
            "loss = 2.4134263978300517e+172\n",
            "loss = 7.936318404285902e+174\n",
            "loss = 1.5600029884405553e+176\n",
            "loss = 7.087142306925104e+175\n",
            "loss = 2.761170994366511e+177\n",
            "loss = 4.926086653054856e+179\n",
            "loss = 1.619895771459917e+182\n",
            "loss = 3.1841492688536714e+183\n",
            "loss = 1.4465689592951301e+183\n",
            "loss = 5.635874205395543e+184\n",
            "loss = 1.0054721260703622e+187\n",
            "loss = 3.306397471372403e+189\n",
            "loss = 6.4992225280776815e+190\n",
            "loss = 2.952617096388036e+190\n",
            "loss = 1.1503480995507928e+192\n",
            "loss = 2.0522866679121695e+194\n",
            "loss = 6.748745463323998e+196\n",
            "loss = 1.3265676293083877e+198\n",
            "loss = 6.026638178473638e+197\n",
            "loss = 2.3479955405556237e+199\n",
            "loss = 4.1889580606785424e+201\n",
            "loss = 1.3774981901928274e+204\n",
            "loss = 2.7076802917985026e+205\n",
            "loss = 1.2301076146536965e+205\n",
            "loss = 4.792534590722533e+206\n",
            "loss = 8.55015525290871e+208\n",
            "loss = 2.8116355466308067e+211\n",
            "loss = 5.526693400785266e+212\n",
            "loss = 2.510794075930812e+212\n",
            "loss = 9.782125820322817e+213\n",
            "loss = 1.7451870796959132e+216\n",
            "loss = 5.738878281917243e+218\n",
            "loss = 1.1280630153715522e+220\n",
            "loss = 5.1248255165902634e+219\n",
            "loss = 1.9966467378214527e+221\n",
            "loss = 3.5621317426972126e+223\n",
            "loss = 1.1713724410024303e+226\n",
            "loss = 2.3025090671184097e+227\n",
            "loss = 1.0460370616319087e+227\n",
            "loss = 4.0753904303405215e+228\n",
            "loss = 7.270729138415369e+230\n",
            "loss = 2.390908690054322e+233\n",
            "loss = 4.699691357593458e+234\n",
            "loss = 2.135084464369285e+234\n",
            "loss = 8.318350384722044e+235\n",
            "loss = 1.484041187207032e+238\n",
            "loss = 4.880125367543462e+240\n",
            "loss = 9.592621880217236e+241\n",
            "loss = 4.3579580850407857e+241\n",
            "loss = 1.6978729843369588e+243\n",
            "loss = 3.029102313398598e+245\n",
            "loss = 9.960908880380588e+247\n",
            "loss = 1.957966758564795e+249\n",
            "loss = 8.895104145953604e+248\n",
            "loss = 3.465558118633661e+250\n",
            "loss = 6.182753486987096e+252\n",
            "loss = 2.0331384595799803e+255\n",
            "loss = 3.996440051025879e+256\n",
            "loss = 1.8155951990212966e+256\n",
            "loss = 7.073611032404626e+257\n",
            "loss = 1.2619725821661567e+260\n",
            "loss = 4.149874319164855e+262\n",
            "loss = 8.15720339049627e+263\n",
            "loss = 3.7058429812861874e+263\n",
            "loss = 1.4438070672865738e+265\n",
            "loss = 2.575834216083539e+267\n",
            "loss = 8.470380747419282e+269\n",
            "loss = 1.6649809906905302e+271\n",
            "loss = 7.564060650386753e+270\n",
            "loss = 2.9469797505080235e+272\n",
            "loss = 5.257580079400741e+274\n",
            "loss = 1.7289041664444948e+277\n",
            "loss = 3.398421697552116e+278\n",
            "loss = 1.5439135929842236e+278\n",
            "loss = 6.01513169361744e+279\n",
            "loss = 1.0731338266536554e+282\n",
            "loss = 3.528896404875113e+284\n",
            "loss = 6.936577714081332e+285\n",
            "loss = 3.151308923573451e+285\n",
            "loss = 1.2277590059899049e+287\n",
            "loss = 2.190392143374792e+289\n",
            "loss = 7.202891911557157e+291\n",
            "loss = 1.4158369580251885e+293\n",
            "loss = 6.43219152737592e+292\n",
            "loss = 2.5060002898835692e+294\n",
            "loss = 4.470847551902264e+296\n",
            "loss = 1.4701948126870977e+299\n",
            "loss = 2.8898894733647495e+300\n",
            "loss = 1.3128858150133785e+300\n",
            "loss = 5.115040836400248e+301\n",
            "loss = 9.125524802857318e+303\n",
            "loss = 3.0008402372162956e+306\n",
            "loss = 5.898603734651073e+307\n",
            "loss = 2.6797541023572896e+307\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = inf\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n",
            "loss = nan\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:8: RuntimeWarning: overflow encountered in double_scalars\n",
            "  \n",
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:9: RuntimeWarning: overflow encountered in double_scalars\n",
            "  if __name__ == '__main__':\n",
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: RuntimeWarning: invalid value encountered in add\n",
            "  # Remove the CWD from sys.path while we load stuff.\n",
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:11: RuntimeWarning: invalid value encountered in double_scalars\n",
            "  # This is added back by InteractiveShellApp.init_path()\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cCSCKdJbpzz3",
        "outputId": "2995120e-2d8b-4d3f-b5a1-720ecce6dbc4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 185
        }
      },
      "source": [
        "for i in range(len(X)):\n",
        "  inputs = X[i]\n",
        "  print(inputs)\n",
        "  summation = np.dot(inputs, weights[1:]) + weights[0]\n",
        "  print(summation)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[1 2 3]\n",
            "nan\n",
            "[3 4 5]\n",
            "nan\n",
            "[5 6 7]\n",
            "nan\n",
            "[7 8 9]\n",
            "nan\n",
            "[9 8 7]\n",
            "nan\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8Ta57NpOJq-Y",
        "outputId": "6075648a-093a-436c-c404-1a33469310b9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 293
        }
      },
      "source": [
        "plt.plot(history)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7f597d91d160>]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 30
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAEDCAYAAAAcI05xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAQG0lEQVR4nO3d/49c1XnH8c9ndw0hNg0Ej5DLN7vUpaKpYqMV0AahhjTEhginUisZpS2tIm3TmgpUpBaUSG3/gKZpqwTVTSikpVj5AiqKUhKSEhGkAl07BmwcyjfT2HLwGpIYSGJs36c/3DvrsT27nu7umXnGfr+k0c7O3J377OH64ew5zznXESEAQF4jgw4AADA7EjUAJEeiBoDkSNQAkByJGgCSI1EDQHLFErXtu2zvtb2th2M/bvsZ21ttP2b70o737rD9gu3nbH+oee2S5tj2Y7/tW0v9LgAwSC5VR237aklvSvpCRLznBMf+XETsb57fIOlPImJNk7Dvk3S5pJ+X9E1JvxQRhzt+dlTSbklXRMQrRX4ZABigYj3qiHhU0uudr9m+2PZDtjfb/o7tX26O3d9x2GJJ7f97rJO0KSIORMTLkl5QnbQ7fUDSiyRpACersT6fb6Okj0fE87avkPRZSddIku0Nkv5M0mnt1ySdJ+nxjp/f1bzWab3qXjcAnJT6Nploe4mkX5f0JdtbJf2jpGXt9yPiMxFxsaS/kPTJHj/zNEk3SPrSwkcMADn0s0c9IulHEbHqBMdtknRn83y3pAs63ju/ea1traQtEfHqgkUJAMn0rUfdjEO/bPt3JMm19zbPV3Ycer2k55vnD0pab/t02yskrZT0ZMexN4phDwAnuWI9atv3SfoNSUtt75L0l5I+KulO25+UtEh17/kpSTfb/k1JByX9UNJNkhQR221/UdKzkg5J2tCu+LC9WNIHJf1Rqd8BADIoVp4HAFgYrEwEgOSKDH0sXbo0li9fXuKjAeCktHnz5n0R0er2XpFEvXz5ck1OTpb4aAA4KdmecdEeQx8AkByJGgCS6ylR2z7L9pdtf8/2Dtu/VjowAECt1zHqv5P0UET8drNs+50FYwIAdDhhorb9LklXS/oDSYqItyW9XTYsAEBbL0MfKyRNSfpn29+1/blmVeBRbE/YnrQ9OTU1teCBAsCpqpdEPSbpMkl3RsRqSW9Juv3YgyJiY0SMR8R4q9W1FBAAMAe9JOpdknZFxBPN919WnbgBAJIe2rZH+948UOzzT5ioI+IHkr5v+5LmpQ+o3iQJAE55Pzt4WH987xbdv2VXsXP0WvXxp5LubSo+XpL0h8UiAoAhcrgKRUhvH6qKnaOnRB0RWyWNF4sCAIZU1exAeqgqtxMpKxMBYB7a+bkiUQNATu09/Q8X3NufRA0A89DuSDP0AQBJtceoGfoAgKSYTASA5ILJRADIjR41ACQ3XZ5H1QcA5NQe8jhMjxoAcgrK8wAgN8rzACA5JhMBIDkmEwEguem9PuhRA0BO7fRMogaApCp61ACQW9Xc2IXJRABIaro8j8lEAMhpesHLYRI1AKREjxoAkmMyEQCSa+dnEjUAJMXNbQEguaoPk4ljvRxke6ekNyQdlnQoIsaLRQQAQ6Qfk4k9JerG+yNiX7FIAGAIsXseACSX6ea2Iekbtjfbnuh2gO0J25O2J6emphYuQgBIrEo0mXhVRFwmaa2kDbavPvaAiNgYEeMRMd5qtRY0SADIaro8b9ArEyNid/N1r6QHJF1eLCIAGCIpetS2F9s+s/1c0rWSthWLCACGSD9uHNBL1ce5kh6w3T7+3yLioWIRAcAQaW9zOtBEHREvSXpvsQgAYIhRngcAyVWJyvMAAF2w1wcAJMfueQCQHPtRA0ByRzZlOjIMstBI1AAwD525uVSvmkQNAPPQub1pqRI9EjUAzENnbi61JzWJGgDmoTM5M/QBAAkFiRoAcquYTASA3Kj6AIDkjhqjZjIRAPLpHKM+VOguLyRqAJgHyvMAIDnK8wAgOao+ACC5YDIRAHKrmEwEgNyYTASA5JhMBIDkWJkIAMl13n2cRA0ACVGeBwDJpdrrw/ao7e/a/mqRSABgCEWyW3HdImlHkSgAYEgdVZ43yERt+3xJ10v6XJEoAGBIZSrP+7SkP5dUzXSA7Qnbk7Ynp6amFiQ4AMguxWSi7Q9L2hsRm2c7LiI2RsR4RIy3Wq0FCxAAMsuy18f7JN1ge6ekTZKusf2vRaIBgCGTYugjIu6IiPMjYrmk9ZL+MyJ+t0g0ADBkUgx9AABmVvWhPG/s/3NwRHxb0reLRAIAQyiylOcBALpLtTIRAHC8FJOJAICZVSEtGrUkEjUApBQRGhupUymJGgASqippjB41AORVRWjRaJ1KM+yeBwA4RhXS2Ejdo6Y8DwASio4eNeV5AJBQSBodsWzGqAEgpSpCI66HP0jUAJBQFdKIrRGTqAEgpSpCpkcNAHlFRN2jHjHleQCQUVXVQx+jIz5q34+FRKIGgHlg6AMAkmMyEQCSiwiNjNCjBoC0qo7JRBI1ACRUheRmMpEl5ACQUHtl4ijleQCQUzSTiaM2u+cBQEadPWrGqAEgobqO2iRqAMiqrqNuyvMGNZlo+x22n7T9lO3ttv+6SCQAMISiD+V5Yz0cc0DSNRHxpu1Fkh6z/R8R8XiRiABgiFQdk4kDS9QREZLebL5d1DzKRAMAQ6a918fAx6htj9reKmmvpIcj4okux0zYnrQ9OTU1tdBxAkBK0z3qQSfqiDgcEasknS/pctvv6XLMxogYj4jxVqu10HECQErRWZ6XYWViRPxI0iOS1hSJBgCGTHuvj4H2qG23bJ/VPD9D0gclfa9INAAwZKqq3uuj5O55vVR9LJN0j+1R1Yn9ixHx1SLRAMCQaa9MlAZb9fG0pNVFzg4AQ66914etgfaoAQAzqJobB4w4yWQiAOBoVYSsBOV5AIDuIpRjwQsAoLvp8jxubgsAOU3vnjdKogaAlEJ1j3rpktO17KwzipyDqg8AmIf2gpfbrr1Et117SZFz0KMGgHmI6QUv5ZCoAWAe2rvnlUSiBoB5aC94KYlEDQDzUEU9Rl0SiRoA5oExagBIrr3gpSQSNQDMA5OJAJBc++a2JZGoAWAegh41AORWMZkIALkxmQgAyVFHDQDJUUcNAMlRngcAyTGZCACJRURzz0R61ACQUjR33mLoAwCSqppMPfChD9sX2H7E9rO2t9u+pWxIADAc2veyHSmcqXu5Z+IhSbdFxBbbZ0rabPvhiHi2aGQAkFy7Rz3wvT4iYk9EbGmevyFph6TzyoYFAPmlHKO2vVzSaklPdHlvwvak7cmpqamFiQ4AEkszRt1me4mkr0i6NSL2H/t+RGyMiPGIGG+1WgsZIwCkdCRRJ+hR216kOknfGxH3F40IAIZEezJx4HXUriP4vKQdEfGpotEAwBCJ9mRi4fP00qN+n6Tfk3SN7a3N47rCcQFAetPleYUz9QnL8yLiMZX/HwYADJ3pMerCmZqViQAwR0fqqEnUAJBS9Gnog0QNAHOUcsELAOCIdAteAABHY4waAJJj6AMAkmPoAwCSq+hRA0BuafajBgB0F5l2zwMAHI+hDwBIjslEAEiuquqv1FEDQFL0qAEgORa8AEByR/ajLnseEjUAzBF7fQBAcpTnAUBywWQiAORGjxoAkmOvDwBIrmKvDwDIjTpqAEguzcpE23fZ3mt7W9lQAGC4tCcTM9RR3y1pTdEoAGAIpelRR8Sjkl4vGwYADJ+hu3GA7Qnbk7Ynp6amFupjASCt9janQ5OoI2JjRIxHxHir1VqojwWAtKijBoDkjkwmlj0PiRoA5ijNGLXt+yT9l6RLbO+y/bGiEQHAkOjXXh9jJzogIm4sGgEADKk05XkAgO6aDnWKBS8AgC7YjxoAkmP3PABIbugWvADAqYYFLwCQ3PR+1IUHqUnUADBHlOcBQHLc3BYAkmOMGgCSS7PXBwCgO4Y+ACA5JhMBILlMN7cFAHTBXh8AkBx7fQBAckwmAkBy1FEDQHJVRaIGgNRe3X9AZ75jTKeNlk2lJGoAmKOdr72lFUsXU54HAFntfO0tXXTO4uLnIVEDwBy8fajS7h/+VCvOeWfxc5GoAWAO/vf1n6gKaflSetQAkNLOfW9JIlEDQFo7X6sT9YosY9S219h+zvYLtm8vHRQAZPfyvrf0rjMW6ezFpxU/1wkTte1RSZ+RtFbSpZJutH1p6cAAILNXXvtJX4Y9JGmsh2Mul/RCRLwkSbY3SVon6dmFDubD//Ad/exgtdAfOy/t3bGySRlVyqByhsV11bukTaU9P/6prv/VZX05Vy+J+jxJ3+/4fpekK449yPaEpAlJuvDCC+cUzC+2lujg4YT/VQovD52rjGGVLvyfq5xRlV96PBcJQ5KU79qyztZHr7yoL+fqJVH3JCI2StooSePj43PKtp9ev3qhwgGAk0Yvk4m7JV3Q8f35zWsAgD7oJVH/t6SVtlfYPk3SekkPlg0LANB2wqGPiDhk+2ZJX5c0KumuiNhePDIAgKQex6gj4muSvlY4FgBAF6xMBIDkSNQAkByJGgCSI1EDQHIusZTV9pSkV+b440sl7VvAcE42tM/saJ/Z0T6zG2T7XBQRrW5vFEnU82F7MiLGBx1HVrTP7Gif2dE+s8vaPgx9AEByJGoASC5jot446ACSo31mR/vMjvaZXcr2STdGDQA4WsYeNQCgA4kaAJJLk6i5ge7xbO+0/YztrbYnm9febfth2883X88edJz9ZPsu23ttb+t4rWubuPb3zTX1tO3LBhd5f8zQPn9le3dzHW21fV3He3c07fOc7Q8NJur+sX2B7UdsP2t7u+1bmtdTX0MpEjU30J3V+yNiVUdt5+2SvhURKyV9q/n+VHK3pDXHvDZTm6yVtLJ5TEi6s08xDtLdOr59JOlvm+toVbMbppp/Y+sl/UrzM59t/i2ezA5Jui0iLpV0paQNTTukvoZSJGp13EA3It6W1L6BLo63TtI9zfN7JH1kgLH0XUQ8Kun1Y16eqU3WSfpC1B6XdJbt/tyNdEBmaJ+ZrJO0KSIORMTLkl5Q/W/xpBUReyJiS/P8DUk7VN8XNvU1lCVRd7uB7nkDiiWTkPQN25ubmwdL0rkRsad5/gNJ5w4mtFRmahOuqyNubv50v6tjuOyUbh/byyWtlvSEkl9DWRI1ursqIi5T/efXBttXd74ZdW0l9ZUdaJOu7pR0saRVkvZI+pvBhjN4tpdI+oqkWyNif+d7Ga+hLImaG+h2ERG7m697JT2g+s/SV9t/ejVf9w4uwjRmahOuK0kR8WpEHI6IStI/6cjwxinZPrYXqU7S90bE/c3Lqa+hLImaG+gew/Zi22e2n0u6VtI21e1yU3PYTZL+fTARpjJTmzwo6febmfsrJf2448/bU8YxY6q/pfo6kur2WW/7dNsrVE+YPdnv+PrJtiV9XtKOiPhUx1u5r6GISPGQdJ2k/5H0oqRPDDqeQT8k/YKkp5rH9nabSDpH9az085K+Kendg461z+1yn+o/3w+qHi/82ExtIsmqq4lelPSMpPFBxz+g9vmX5vd/WnXiWdZx/Cea9nlO0tpBx9+H9rlK9bDG05K2No/rsl9DLCEHgOSyDH0AAGZAogaA5EjUAJAciRoAkiNRA0ByJGoASI5EDQDJ/R97Bke+zMqBCAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    }
  ]
}